package com.jdl.iscm.common;

import com.jdl.iscm.entity.enums.StockDimensionEnum;
import com.jdl.iscm.entity.excel.StockStrategyExcel;

import java.util.Map;
import java.util.Set;

/**
 * @Author: Ran
 * @Date: 2021/8/21
 **/
public class AssertUtil {

    /**
     * 用于库存策略 Redis key十种拼接
     *
     * @param sellerNo
     * @param deptNo
     * @param stockStrategy
     * @param scene
     * @return
     */
    public static String strategyJoinRedisKey(String sellerNo, String deptNo, StockStrategyExcel stockStrategy, String scene) {

        Map<String, String> map = stockStrategy.getDimensionMap();
        Set<String> set = map.keySet();
        StringBuilder key = new StringBuilder();
        if (set.contains(StockDimensionEnum.SKU.code()) && !set.contains(StockDimensionEnum.WH.code())) { //SKU
            key.append("string_stock_strategy").append("_sku_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_warehouseNo:ALL_goodsNo:").append((map.get(StockDimensionEnum.SKU.code())).split("-")[1]).append("_scene:").append(scene.equals("采购") ? 1 : 2);
        } else if (set.contains(StockDimensionEnum.SKU.code()) && set.contains(StockDimensionEnum.WH.code())) { //SKU + WH
            key.append("string_stock_strategy").append("_sku_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_warehouseNo:").append((map.get(StockDimensionEnum.WH.code())).split("-")[1]).append("_goodsNo:").append((map.get(StockDimensionEnum.SKU.code())).split("-")[1]).append("_scene:").append(scene.equals("采购") ? 1 : 2);
        } else if (set.contains(StockDimensionEnum.WH.code()) && !set.contains(StockDimensionEnum.KIND.code()) && !set.contains(StockDimensionEnum.BAND.code())) { //WH
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_warehouseNo:").append((map.get(StockDimensionEnum.WH.code())).split("-")[1]);
        } else if (set.contains(StockDimensionEnum.WH.code()) && set.contains(StockDimensionEnum.KIND.code()) && !set.contains(StockDimensionEnum.BAND.code())) { //WH + kind
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_warehouseNo:").append((map.get(StockDimensionEnum.WH.code())).split("-")[1]).append("_category:").append(map.get(StockDimensionEnum.KIND.code()));
        } else if (set.contains(StockDimensionEnum.WH.code()) && !set.contains(StockDimensionEnum.KIND.code()) && set.contains(StockDimensionEnum.BAND.code())) { //WH + band
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_warehouseNo:").append((map.get(StockDimensionEnum.WH.code())).split("-")[1]).append("_band:").append(map.get(StockDimensionEnum.BAND.code()));
        } else if (set.contains(StockDimensionEnum.WH.code()) && set.contains(StockDimensionEnum.KIND.code()) && set.contains(StockDimensionEnum.BAND.code())) { //WH + Kind + band
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_warehouseNo:").append((map.get(StockDimensionEnum.WH.code())).split("-")[1]).append("_category:").append(map.get(StockDimensionEnum.KIND.code())).append("_band:").append(map.get(StockDimensionEnum.BAND.code()));
        } else if (set.contains(StockDimensionEnum.KIND.code()) && !set.contains(StockDimensionEnum.BAND.code())) { // kind
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_category:").append(map.get(StockDimensionEnum.KIND.code()));
        } else if (set.contains(StockDimensionEnum.KIND.code()) && set.contains(StockDimensionEnum.BAND.code())) { // kind + band
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_category:").append(map.get(StockDimensionEnum.KIND.code())).append("_band:").append(map.get(StockDimensionEnum.BAND.code()));
        } else if (set.contains(StockDimensionEnum.BAND.code())) { // band
            key.append("string_stock_strategy").append("_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_scene:").append(scene.equals("采购") ? 1 : 2).append("_band:").append(map.get(StockDimensionEnum.BAND.code()));
        } else {   //全局兜底
            key.append("string_fallback_sellerNo:").append(sellerNo).append("_deptNo:").append(deptNo).append("_configureType:10_scene:").append(scene.equals("采购") ? 1 : 2);
        }
        return key.toString();
    }
}
